﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Scheduling.Models.Interfaces
{
    public interface IUserLoader
    {
        /// <summary>
        /// Retrieve users from the database based on specified parameters. 
        /// </summary>
        /// <param name="LoadingFlags">The flags for which optional attributes you want to load. </param>
        /// <returns>List of users. </returns>
        List<User> GetUsers();

        /// <summary>
        /// Retrieve a single user from the database with the specified ID. 
        /// </summary>
        /// <param name="UserID">The ID of the retrieved user. </param>
        /// <returns>The retrieved user. </returns>
        User GetUser(string UserID);

       

        /// <summary>
        /// Checks if a user exists in the database. 
        /// </summary>
        /// <param name="UserID">The ID of the user. </param>
        /// <returns>True if it exists. Otherwise False. </returns>
        bool UserExists(string UserID);

        /// <summary>
        /// Insert user into database. 
        /// </summary>
        /// <param name="UserID">The user to insert into database. </param>
        void InsertUser(User User);

        /// <summary>
        /// Delete user from database
        /// </summary>
        /// <param name="UserID">The ID of the user to delete from database </param>
        void DeleteUser(string UserID);

        /// <summary>
        /// Edit User in database 
        /// </summary>
        /// <param name="UserID">The user to edit. User must exist in database </param>
        void EditUser(User User);
        
        /// <summary>
        /// Delete all users
        /// </summary>
        /// <param name="UserID">The user to edit. User must exist in database </param>
        void Clear();
    }
}